From: Florian Müllner Date: Sat, 12 Sep 2020 16:32:57 +0000 (+0200) Subject: systemActions: Filter out empty (folded) terms X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~655^2^2~36 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=b2d6c11ec39042855910f36d59e0789e16593fb9;p=gnome-shell.git systemActions: Filter out empty (folded) terms We split the search string into words using whitespace, while GLib.tokenize_and_fold() splits on any non-alphanumeric characters. That is, a valid search term like ',' will be tokenized as [], so the original non-empty terms may get mapped to an empty array. And as [].every() returns true for any condition[0], we end up matching *all* system actions in that case. We want the exact opposite and not return any results, so handle that case explicitly. [0] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3169 --- diff --git a/js/misc/systemActions.js b/js/misc/systemActions.js index 4c2f3a290..1cd657648 100644 --- a/js/misc/systemActions.js +++ b/js/misc/systemActions.js @@ -269,6 +269,10 @@ const SystemActions = GObject.registerClass({ terms = terms.map( term => GLib.str_tokenize_and_fold(term, null)[0]).flat(2); + // tokenizing may return an empty array + if (terms.length === 0) + return []; + let results = []; for (let [key, { available, keywords }] of this._actions) {